package com.bistu.xiong.common.presenter;

/**
 * Created by XiongXiaoJun on 2017/9/18.
 * 最基本的Presenter 实现设置View、start、destroy最基本的方法
 */

public class BasePresenter<T extends BaseContract.View> implements BaseContract.Presenter{
    private T mView;

    public BasePresenter(T view) {
        setView(view);
    }

    /**
     * 给子类使用的设置View的操作
     */
    @SuppressWarnings("unchecked")
    protected void setView(T mView) {
        this.mView = mView;
        this.mView.setPresenter(this);
    }
    /**
     * 给子类使用的获取View的操作
     * 不允许覆写
     * @return
     */
    protected T getView() {
        return mView;
    }

    @Override
    public void start() {
        // 开始的时候调用 view接口的showLoading方法
        T view = mView;
        if (view != null) {
            view.showLoading();
        }
    }

    @SuppressWarnings("unchecked")
    @Override
    public void destroy() {
        T view = mView;
        mView = null;
        if (view != null) {
            // 把Presenter设置为NULL
            view.setPresenter(null);
        }

    }
}
